/*
 * Copyright (c) 2011, Jordan Taekema
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are
 * permitted provided that the following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright notice, this list of
 *       conditions and the following disclaimer.
 *
 *    2. Redistributions in binary form must reproduce the above copyright notice, this list
 *       of conditions and the following disclaimer in the documentation and/or other materials
 *       provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package com.andactive;

import java.lang.annotation.*;

/**
 * This overrides the defaults for a specific database column
 * <ul>
 * <li>name - set the database column name (defaults to the field name)</li>
 * <li>type - set the database column type (defaults to INTEGER, REAL, TEXT or  depending on the field type)</li>
 * <li>nullable - set if this database column can be null (this only applies to non-primitive fields)</li>
 * </ul>
 * <p/>
 * Future support is planned to allow specifying the length, precision, scale, insertable, updatable, unique and single
 * column indexes.
 * <p/>
 * Created 7/30/11 2:36 AM by Jordan
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Column {
	String name() default "";

	String type() default "";

//	int length() default 255;
//
//	int precision() default 0;
//
//	int scale() default 0;

	boolean nullable() default true;

//	boolean insertable() default true;
//
//	boolean updatable() default true;
//
//	boolean unique() default false;
//
//	boolean indexed() default false;
}